// pages/index/index.js
import {
  request
} from "../../request4/index.js"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //parts:[{name:"parts_test1",num:1},{name:"parts_test2",num: 2}],
    //dm_list:[0,1,3],
    //id:4
    showLoginDialog: false, // 控制登录对话框显示
    pendingTarget: '', // 登录成功后要跳转的页面
    pendingFlag: 0 // 登录成功后要检查的权限等级
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 页面加载时检查登录状态
    // this.checkLoginOnStart();
    /*let parts = this.data.parts;
    let dm_list = this.data.dm_list;
    let id = this.data.id;
    console.log(typeof(dm_list));
    request({ urlLeft: "/case/add", data: { dm_list, parts, id },method:"GET"})
    .then(result=>{
      console.log(result);
    })*/
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 页面启动时检查登录状态
   */
  checkLoginOnStart() {
    let grade = wx.getStorageSync('grade') || -1;

    // 检查网络状态
    wx.getNetworkType({
      success: (res) => {
        console.log('网络类型：', res.networkType);
        if (res.networkType === 'none') {
          wx.showModal({
            title: '网络异常',
            content: '当前无网络连接，请检查网络设置后重试',
            showCancel: false
          });
          return;
        }
      }
    });

    if (grade === -1) {
      // 未登录，显示登录对话框
      console.log('用户未登录，弹出登录对话框');
      this.setData({
        showLoginDialog: true
      });
    } else {
      // 已登录，显示欢迎信息
      console.log('用户已登录，权限等级：', grade);
      wx.showToast({
        title: '欢迎使用故障向导',
        icon: 'success',
        duration: 1500,
      });
    }
  },

  /**
   * 用户点击登录按钮
   */
  handleLogin() {
    console.log('用户点击登录');
    const that = this;

    wx.getUserProfile({
      desc: '获取您的信息以便提供更好的服务',
      success: (resu) => {
        console.log('获取用户信息成功：', resu);

        wx.login({
          success(res) {
            console.log('微信登录响应：', res);
            if (res.code) {
              let code = res.code;
              var {
                userInfo
              } = resu;

              console.log('准备发送登录请求，code:', code);
              // console.log('请求地址：', 'https://guide.smart-park.nnweather.com/api/v1/wx/auth/wx/login');
              console.log('请求数据：', {
                userInfo,
                code
              });

              request({
                  urlLeft: "/auth/wx/login",
                  data: {
                    userInfo,
                    code
                  },
                  method: "POST"
                })
                .then(result => {
                  console.log('后端登录响应：', result);

                  if (result && result.data && result.data.info) {
                    // 兼容两种返回结构：info 为数字或对象
                    const info = result.data.info;
                    const grade = typeof info === 'number' ? info : (info.grade !== undefined ? info.grade : -1);
                    const token = typeof info === 'object' ? info.token : '';
                    const userId = typeof info === 'object' ? info.id : '';
                    console.log('info', info);
                    console.log('grade', grade);
                    wx.setStorageSync('grade', grade);
                    if (token) wx.setStorageSync('token', token);
                    if (userId) wx.setStorageSync('userId', userId);

                    // 关闭登录对话框
                    that.setData({
                      showLoginDialog: false
                    });

                    wx.showToast({
                      title: '登录成功',
                      icon: 'success',
                      duration: 1500,
                    });
                    console.log('登录成功，权限等级：', grade);

                    // // 登录后检查资料是否完善
                    // setTimeout(() => {
                    //     try {
                    //         that.checkProfileAndRedirect();
                    //     } catch (e) {
                    //         console.warn('检查资料失败：', e);
                    //     }
                    // }, 300);

                    // 检查是否有待跳转的页面
                    if (that.data.pendingTarget) {
                      setTimeout(() => {
                        let grade = wx.getStorageSync('grade');
                        if (grade >= that.data.pendingFlag) {
                          wx.navigateTo({
                            url: that.data.pendingTarget
                          });
                          // 清除待跳转信息
                          that.setData({
                            pendingTarget: '',
                            pendingFlag: 0
                          });
                        } else {
                          wx.showToast({
                            title: '权限不足',
                            icon: 'none',
                            duration: 1500,
                          });
                        }
                      }, 1600);
                    }
                  } else {
                    console.error('后端返回数据格式异常：', result);
                    wx.showToast({
                      title: '登录失败，请重试',
                      icon: 'none',
                      duration: 2000,
                    });
                  }
                }).catch(err => {
                  console.error('网络请求失败：', err);

                  let errorMsg = '网络请求失败';
                  if (err.errMsg) {
                    if (err.errMsg.includes('timeout')) {
                      errorMsg = '网络超时，请检查网络连接';
                    } else if (err.errMsg.includes('fail')) {
                      errorMsg = '连接服务器失败，请稍后重试';
                    }
                  }

                  wx.showModal({
                    title: '登录失败',
                    content: errorMsg + '\n\n是否重试？',
                    showCancel: true,
                    cancelText: '取消',
                    confirmText: '重试',
                    success(res) {
                      if (res.confirm) {
                        // 用户点击重试，重新执行登录
                        that.handleLogin();
                      } else {
                        // 用户取消，关闭登录对话框
                        that.setData({
                          showLoginDialog: false,
                          pendingTarget: '',
                          pendingFlag: 0
                        });
                      }
                    }
                  });
                });
            } else {
              console.error('微信登录失败：', res);
              wx.showToast({
                title: '微信登录失败',
                icon: 'none',
                duration: 2000,
              });
            }
          },
          fail(err) {
            console.error('wx.login调用失败：', err);
            wx.showToast({
              title: '登录失败',
              icon: 'none',
              duration: 2000,
            });
          }
        });
      },
      fail: (err) => {
        console.error('getUserProfile失败：', err);
        // 清除待跳转信息
        that.setData({
          showLoginDialog: false,
          pendingTarget: '',
          pendingFlag: 0
        });
        wx.showToast({
          title: '取消登录',
          icon: 'none',
          duration: 1500,
        });
      }
    });
  },

  /**
   * 登录后检查资料完整度
   */
  checkProfileAndRedirect() {
    const token = wx.getStorageSync('token');
    if (!token) return; // 未拿到 token 时跳过

    request({
      urlLeft: "/user/profile",
      method: "POST",
      header: {
        token
      }
    }).then((res) => {
      const info = (res && res.data && res.data.info) || {};
      const required = [info.username, info.pwd, info.realname, info.email, info.phone, (info.grade !== undefined ? info.grade : undefined)];
      const isCompleted = required.every(v => v !== undefined && v !== null && String(v).trim() !== "");
      if (!isCompleted) {
        wx.navigateTo({
          url: "/pages/profile4/index"
        });
      }
    }).catch((err) => {
      console.warn('获取资料失败：', err);
    });
  },

  /**
   * 用户点击稍后登录
   */
  handleLater() {
    console.log('用户选择稍后登录');
    this.setData({
      showLoginDialog: false,
      pendingTarget: '',
      pendingFlag: 0
    });
    wx.showToast({
      title: '点击功能时需要登录',
      icon: 'none',
      duration: 2000,
    });
  },

  checkLogin(target, flag) {
    let grade = wx.getStorageSync('grade') || -1;
    console.log(grade);
    if (grade === -1) {
      // 保存待跳转的页面信息
      this.setData({
        pendingTarget: target,
        pendingFlag: flag,
        showLoginDialog: true
      });

      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 1500,
      });
    } else {
      if (grade < flag) {
        wx.showToast({
          title: '权限不足',
          icon: 'none',
          duration: 1500,
        })
      } else {
        wx.navigateTo({
          url: target
        })
      }
    }
  },

  goToGuide() {
    this.checkLogin("/pages/search4/index", 0);
  },
  goToSpareParts() {
    this.checkLogin("/pages/SpareParts4/index", 0);
  },
  goToLog() {
    this.checkLogin("/pages/log4/index", 0);
  },
  goToKnow() {
    this.checkLogin("/pages/know4/index", 0);
  },
  goToCase() {
    this.checkLogin("/pages/case4/index", 0);
  },


})